Too Many Vim Commands#

Getting back into Vim again and decided this time to take it slower and get the basics well in place before I try and incorporate too many commands. It’s the same mentality I’m bringing to my Python journey and will reapply to C#. The notes below are a mix of my obsidian notes from when I started using Vim in April of 2021 and resources I’ve used to better understand the commands this time round.

Phase One Commands#

There were too many commands to get stated, so following the advise of The Primeagen Youtube Channel, I’m focusing for my first phase on the following commands. w, b, h, j, k, l, y, p, d, v, V, u, :w and :q.

Phase One Commands Explained#

command explanation
w move forward one word
b backwards one word
h, j, k, l move left, down, up, right
y yank
p paste/put
d delete
v enter visual mode
V enter line select visual mode
u undo
:w write file/save
:q quit

Phase Two Commands#

The goals is to feel comfortable with the phase one commands before moving on. Phase two commands are o, O, P, a, A, I, /, n, N, *, $.

Phase Two Commands Explained#

command result
o open a new line and insert
O open a new line above and insert
p puts the yanked on the next line
P puts the yanked on the previous line
i insert before the cursor
I insert at the beginning of the line
a insert after the cursor (append)
A insert at the end of the line (Append)
/ find
n go to next search result
N go to previous search result
* go to next search result
$ go to previous search result

Phase Three Commands#

Phase two commands are f, t, F, T, ;, ,, x, c, D, C, S..

Phase Three Commands Explained#

command result
f{character} (find) next {character}
F{character} (find) previous {character}
t{character} until next character
T{character} until previous character
; , move to the next or previous result
x delete
c cut
C cut to the end of the line
D delete rest of the line
S delete the rest of the line and
enter insert mode, properly indented

Phase Four Commands#

Phase two commands are g, gg, :line number, G, gi, 18j, {, }, %, di{, yi{, cip, da[

Phase Four Commands Explained#

command result
g go to last line of the file
gg go to first line of file
gi go to last insert change point and insert
G100 go to line number 100
:100 go to line number 100
dd delete line
D delete from cursor to end of line
dd delete line
D delete from cursor to line end
dw delete word
d2W delete two words
dt; delete until ;
d/hell delete until hell*
command result
cw change word
ci change inner
ca change around/append
ci change inside quotes from line beginning
command result
y{motion} yank in a direction
yaw yanks a word
yas yanks a sentence
yap yanks a paragraph
command explanation
e end of word
ge go to the end of the previous word
gE go to the end of the previous WORD
% find matching
0 move to the fist character of a line
$ move to the end of the line
g_ move to the non-blank character at the end of a line
{ jump up one paragraph
} jump down one paragraph
CTRL+D Jump down one page
CTRL+U jump up one page

So far so good.#

Search and replace#

:#,#s/older/new/g where #,# are the line numbers of the range of lines where the substitution is to be done.

:%s/older/new/g to change every occurrence in the whole file.

:%s/older/new/gc to find every occurrence in the whole file,

% typing when on a bracket takes you to the matching bracket.

Below are my scattered notes from obsidian, as I progress through the newer commands, I’ll add them here. For me at the moment it’s about practicing phase one. Once I move onto phase two I’ll add phase three etc. Why? Because it’ll be great practice using those commands when editing this post.

Meanwhile hope the notes are helpful.

Also discovered a great looking cheat sheet at rtoor Vim Cheat Sheet code at rtoor github.


#todo#

Wow#

Just realized the power of VIm in the following example. [[Vim Learn]].

// d + i=> wdtSpolite<ESC>fcdsipolite<ESPACE><ESC>
// c => wctSpolite<ESC>fccwpolitely<ESPACE><ESC>
const courteousSalute = I courteously salute you good person.";

well that example was nothing! Wait till you see what’s coming.

Write, Quit, Open#

EX commands start with a : :write saves the file :quit closes the file if there are no changes :edit creates or opens a new or existing file

Visual Mode#

command explanation
v for character-wise visual mode
V for line-wise visual mode
C-V for block-wise visual mode

Key Mappings#

command explanation
Leader Spacebar
Leader + t :tabnew
Leader + t + n :tabnext
Leader + t + p :tabprev
Leader + t + o :tabo
**Leader + /** :noh

Surround and Motion#

Sneak explanation options
s{char}{char} jump to the f ;next ,previous
{operator}z{char}{char} jump to on the previous linence and carry out the operator. ; next , previous
w move forward one word
b backwards one word
W move forward one WORD
B backwards one WORD
Easy Motion explanation
Leader Leader +w Label the beginning of all words ahead
Leader Leader +f{char} Label the beginning of {char} ahead
Leader Leader +b Label the beginning of all words behind
Leader Leader +bd+w/b/f{char} Label the beginning of all words bidirection
Leader Leader +e Label the end of all words
Leader Leader +ge Label the beginning of all words backwards
Leader Leader +j/k Label the beginning of lines down/up
Multiple Cursors explanation
gb select a word, command to select others
switch to VISUAL mode move up or down to set cursors
switch to VISUAL mode move to the end or beginning to set cursors

Moving Around and Find#

command explanation
w move forward one word
b backwards one word
W move forward one WORD
B backwards one WORD
e end of word
ge go to the end of the previous word
gE go to the end of the previous WORD
f{character} (find) next {character}
F{character} (find) previous {character}
t{character} until next character
T{character} until previous character
% find matching
0 move to the fist character of a line
$ move to the end of the line
g_ move to the non-blank character at the end of a line
{ jump up one paragraph
} jump down one paragraph
CTRL+D Jump down one page
CTRL+U jump up one page

Editing Text#

command result
d delete
f or / or ? find
c change
t unTil
r{char} replace character under the cursor with {char}
R replace more than one character, it functions like delete but acts on as many characters as you type.

Delete#

command result
dd delete line
D delete from cursor to end of line
dd delete line
D delete from cursor to line end
dw delete word
d2W delete two words
dt; delete until ;
d/hell delete until hell*
command result
cw change word
ci change inner
ca change around
ci change inside quotes from line beginning

Insert and Append#

command result
i insert before the cursor
a insert after the cursor (append)
I insert at the beginning of the line
A insert at the end of the line (Append)

Three modified inserts#

command result
o open a new line and insert
O open a new line above and insert
gi go to last insert change point and insert

Wow#

Just realized the power of VIm in the following example. [[Vim Learn]].

// d + i=> wdtSpolite<ESC>fcdsipolite<ESPACE><ESC>
// c => wctSpolite<ESC>fccwpolitely<ESPACE><ESC>
const courteousSalute = I courteously salute you good person.";

well that example was nothing! Wait till you see what’s coming.

Write, Quit, Open#

EX commands start with a : :write saves the file :quit closes the file if there are no changes :edit creates or opens a new or existing file

Yank and Put#

command result
y{motion} yank in a direction
yaw yanks a word
yas yanks a sentence
yap yanks a paragraph
p puts the after yanked
P puts the yanked before the cursor

Search and replace#

:#,#s/older/new/g where #,# are the line numbers of the range of lines where the substitution is to be done.

:%s/older/new/g to change every occurrence in the whole file.

:%s/older/new/gc to find every occurrence in the whole file,

% typing when on a bracket takes you to the matching bracket.

Visual Mode#

command explanation
v for character-wise visual mode
V for line-wise visual mode
C-V for block-wise visual mode

Key Mappings#

command explanation
Leader Spacebar
Leader + t :tabnew
Leader + t + n :tabnext
Leader + t + p :tabprev
Leader + t + o :tabo
**Leader + / ** :noh

Surround and Motion#

Sneak explanation options
s{char}{char} jump to the first occurrence ;next ,previous
{operator}z{char}{char} jump to the first occurrence and carry out the operator. ; next , previous
Easy Motion explanation
Leader Leader +w Label the beginning of all words ahead
Leader Leader +f{char} Label the beginning of {char} ahead
Leader Leader +b Label the beginning of all words behind
Leader Leader +bd+w/b/f{char} Label the beginning of all words bidirection
Leader Leader +e Label the end of all words
Leader Leader +ge Label the beginning of all words backwards
Leader Leader +j/k Label the beginning of lines down/up
Multiple Cursors explanation
gb select a word, command to select others
switch to VISUAL mode move up or down to set cursors
switch to VISUAL mode move to the end or beginning to set cursors

Moving Around and Find#

command explanation
w move forward one word
b backwards one word
W move forward one WORD
B backwards one WORD
e end of word
ge go to the end of the previous word
gE go to the end of the previous WORD
f{character} (find) next {character}
F{character} (find) previous {character}
t{character} until next character
T{character} until previous character
% find matching
0 move to the fist character of a line
$ move to the end of the line
g_ move to the non-blank character at the end of a line
{ jump up one paragraph
} jump down one paragraph
CTRL+D Jump down one page
CTRL+U jump up one page

Editing Text#

command result
d delete
f or / or ? find
c change
t unTil
r{char} replace character under the cursor with {char}
R replace more than one character, it functions like delete but acts on as many characters as you type.

Delete#

command result
dd delete line
D delete from cursor to end of line
dd delete line
D delete from cursor to line end
dw delete word
d2W delete two words
dt; delete until ;
d/hell delete until hell*
command result
cw change word
ci change inner
ca change around
ci change inside quotes from line beginning

Insert and Append#

command result
i insert before the cursor
a insert after the cursor (append)
I insert at the beginning of the line
A insert at the end of the line (Append)

Three modified inserts#

command result
o open a new line and insert
O open a new line above and insert
gi go to last insert change point and insert

Wow#

Just realized the power of VIm in the following example. [[Vim Learn]].

// d + i=> wdtSpolite<ESC>fcdsipolite<ESPACE><ESC>
// c => wctSpolite<ESC>fccwpolitely<ESPACE><ESC>
const courteousSalute = I courteously salute you good person.";

well that example was nothing! Wait till you see what’s coming.

Write, Quit, Open#

EX commands start with a : :write saves the file :quit closes the file if there are no changes :edit creates or opens a new or existing file

Yank and Put#

command result
y{motion} yank in a direction
yaw yanks a word
yas yanks a sentence
yap yanks a paragraph
p puts the after yanked
P puts the yanked before the cursor

Search and replace#

:#,#s/older/new/g where #,# are the line numbers of the range of lines where the substitution is to be done.

:%s/older/new/g to change every occurrence in the whole file.

:%s/older/new/gc to find every occurrence in the whole file,

% typing when on a bracket takes you to the matching bracket.

Visual Mode#

command explanation
v for character-wise visual mode
V for line-wise visual mode
C-V for block-wise visual mode

Key Mappings#

command explanation
Leader Spacebar
Leader + t :tabnew
Leader + t + n :tabnext
Leader + t + p :tabprev
Leader + t + o :tabo
**Leader + / ** :noh

Surround and Motion#

Sneak explanation options
s{char}{char} jump to the first occurrence ;next ,previous
{operator}z{char}{char} jump to the first occurrence and carry out the operator. ; next , previous
Easy Motion explanation
Leader Leader +w Label the beginning of all words ahead
Leader Leader +f{char} Label the beginning of {char} ahead
Leader Leader +b Label the beginning of all words behind
Leader Leader +bd+w/b/f{char} Label the beginning of all words bidirection
Leader Leader +e Label the end of all words
Leader Leader +ge Label the beginning of all words backwards
Leader Leader +j/k Label the beginning of lines down/up
Multiple Cursors explanation
gb select a word, command to select others
switch to VISUAL mode move up or down to set cursors
switch to VISUAL mode move to the end or beginning to set cursors